const { DataTypes } = require("sequelize");
const { sequelize } = require("../sequelize");

/* 
1. 表名推断
    默认情况下,当未提供表名时,Sequelize 会自动将模型名复数并将其用作表名.
*/
const Classify = sequelize.define(
  "Classify",
  {
    // 在这里定义模型属性

    id: {
      //主键
      type: DataTypes.INTEGER,
      autoIncrement: true,
      primaryKey: true,
    },

    name: {
      //分类名
      type: DataTypes.STRING(2),
      allowNull: false, //不允许为null
      //   unique: true, //唯一约束
      validate: {
        // is: /^[0-9a-f]{64}$/i,
        len: [1, 12],
      },
    },

    status: {
      // 分类状态
      type: DataTypes.BOOLEAN,
      defaultValue: 1, // 1 可用 2 禁用
    },
  },
  {

    indexes: [{ unique: true, fields: ["name"] }],//sync({alter: true}) throws "Too many keys specified" #9653； 解决该报错

    // 这是其他模型参数
    // freezeTableName: true,//强制表名等于模型名,全局已配置
  }
);

// Classify.sync({ alter: true }).then(() => {
//   console.log("用户模型表刚刚(重新)创建！");
// });
// `sequelize.define` 会返回模型
(async () => {
  await sequelize.sync({alter:true});
  console.log("数据模型同步成功");
})();

// Classify.create({name:'随笔',})

console.log(Classify === sequelize.models.Classify); // true

module.exports = Classify;
